package in.lib.handler.streams;
import in.lib.exception.ExceptionHandler;
import in.lib.handler.base.PostStreamResponseHandler;
import in.lib.thread.StreamFragmentRunnable;
import in.model.base.Message;
import in.model.base.NetObject;
import in.rob.client.R;
import android.content.Context;
import android.text.TextUtils;
public class MentionsResponseHandler extends PostStreamResponseHandler
{
public MentionsResponseHandler(Context c, boolean append)
{
super(c, append);
setFailMessage(c.getString(R.string.mentions_stream_fail));
}
@Override public void onCallback()
{
if (getFragment() != null)
{
getFragment().runOnUiThread(responseRunner);
}
if (getFragment() != null)
{
getFragment().extractUsersAndTags(getObjects());
}
}
private StreamFragmentRunnable responseRunner = new StreamFragmentRunnable()
{
@Override public void run()
{
if (getFragment() != null)
{
try
{
getFragment().getRefreshHelper().finish();
getFragment().getHeadedListView().setBlockLayoutChildren(true);
int newPostCount = 0;
boolean foundStart = false;
String firstId = getFragment().getCurrentItemId(0);
boolean tryNewCount = true;
try
{
long firstIdLong = Long.valueOf(firstId);
long firstNewIdLong = Long.valueOf(getFirstId());
if (firstNewIdLong <= firstIdLong)
{
tryNewCount = false;
}
}
catch (Exception e){}
if (getObjects() != null)
{
for (NetObject p : getObjects())
{
((Message)p).setMention(true);
if (tryNewCount)
{
if (p.getId().equals(firstId))
{
foundStart = true;
}
if (!foundStart)
{
newPostCount++;
}
}
}
}
if (!TextUtils.isEmpty(getLastId()))
{
getFragment().getAdapter().setLastId(getLastId());
}
if (getAppend())
{
getFragment().getAdapter().addItems(getObjects());
}
else
{
setNewPostCount(newPostCount);
getFragment().getAdapter().setFirstId(getFirstId());
getFragment().getAdapter().setItems(getObjects());
}
getFragment().getAdapter().setHasMore(getHasMore());
getFragment().getAdapter().setStreamMarker(getMarker());
setFinishedLoading(getAppend());
}
catch (Exception e)
{
ExceptionHandler.sendException(e);
}
}
super.run();
}
};
}